package cn.hchaojie.mapper;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;

import org.junit.Test;

public class DemoJdkProxy {
	@Test
	public void testProxy() {
		// 根据任意一个接口动态创建一个实现了该接口的对象（代理对象）
		
		// 获取接口的类的信息
		Class<?> clazz = PostMapper.class;
		
		PostMapper postMapper = (PostMapper) Proxy.newProxyInstance(
			clazz.getClassLoader(), 
			new Class[] {clazz}, 
			
			/**  拦截接口方法的调用 */
			new InvocationHandler() {
				public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
					System.out.println(proxy.getClass());
					
					System.out.println(method.getName());
					System.out.println(Arrays.toString(args));

					// 是做数据库的查询
					// 遍历结果集
					// 返回post对象
					return null;
				}
			});
		
		postMapper.findById(3);
	}
}
